在pve中向zfs中导入openwrt-img
pve zfs
-
先将编译好的raw img(不要选EFI的,实测UEFI无法启动。原始img+pve seabios成功启动)上传到local(pve)下的ISO image中,成功后在task找到路径:
-
但直接导入zfs会提示:zfs error: cannot create ‘rpool/data/vm-101-disk-0’: volume size must be a multiple of volume block size
这是因为zfs要求img是4K的整数倍。因此需要向末尾写入0凑齐64K整数倍:
1 2
ls -al /var/lib/vz/template/iso/openwrt-x86-64-generic-squashfs-combined.img -rw-r--r-- 1 root root 185106452 Nov 30 12:40 /var/lib/vz/template/iso/openwrt-x86-64-generic-squashfs-combined.img
-
计算补齐字节数 假定img大小为185106452,先计算它除64K的整数
185106452/(64*1024)=2,824.5078125
然后用凑整的数计算比它大的最小的4K整数倍大小
2825*(64*1024)=185,139,200
最后用64K的整数倍送去原来大小,计算出要写入多少0:
185,139,200-185106452=32,748
可以用python:
|
|
-
写入空白补齐
dd if=/dev/zero bs=1 count=32748 >> ./openwrt-x86-64-generic-squashfs-combined.img
-
导入zfs(假设101为虚拟机id)
如果直接导入
/sbin/qm importdisk 101 /var/lib/vz/template/iso/openwrt-x86-64-generic-squashfs-combined-efi.img local-zfs
转成qcow2格式再导入
(raw img最好先转换为qcow2,qcow2格式是QEMU支持的一种主流磁盘映像格式,与raw格式相比,qcow2具有存储空间占用小、支持写时拷贝(COW, copy-on-write)、支持zlib压缩及支持AES加密等特性。)
qemu-img convert -f raw -O qcow2 ./openwrt-x86-64-generic-squashfs-combined.img vm-101-disk-0.qcow2
导入qcow2
/sbin/qm importdisk 101 /mnt/pve/dsm/images/immortalwrt-x86-64-generic-squashfs-combined-efi-20240902.qcow2 local-zfs
-
使用磁盘 到Hardware中双击新硬盘vm-101-disk-0,点击Add